org 0x7c00

start:
  xor ax, ax          ; cs = 0
  mov ds, ax
  mov ss, ax
  mov es, ax
  mov fs, ax
  mov gs, ax

  mov sp, 0x7c00      ; 初始化栈指针

  mov ax, 0xb800      ; 初始化gs寄存器
  mov gs, ax

  mov al, '2'         ; 输出数字2
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 12)], ax

  mov al, '2'         ; 输出数字2
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 13)], ax

  mov al, '3'         ; 输出数字3
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 14)], ax

  mov al, '0'         ; 输出数字0
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 15)], ax

  mov al, '2'         ; 输出数字2
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 16)], ax

  mov al, '1'         ; 输出数字1
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 17)], ax

  mov al, '4'         ; 输出数字4
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 18)], ax

  mov al, '3'         ; 输出数字3
  mov ah, 0x0f        ; 白底黑字
  mov [gs:2 * (12 * 80 + 19)], ax

  jmp $               ; 死循环

times 510 - ($ - $$) db 0
db 0x55, 0xaa
